﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BOL.Ventas;
using BOL.Comun;
using BOL;
using System.Data.SqlClient;
using Website.Logger;
using DAL;
using BOL.Cliente;
using UtilityExtensions;
using System.Drawing;
using System.Web.Script.Services;
using System.Web.Services;

namespace UILGestion.OrdenVenta
{
    public partial class OrdenVentaAnulacionForm : System.Web.UI.Page
    {

        [WebMethod(), ScriptMethod()]
        public static string GetCliente(String prefixText, String contextKey)
        {
            var p = (from a in DbUtil.Db.OrdenVentas
                     where (a.Cliente.descripcion).Contains(prefixText)
                     & a.idProyecto == contextKey.ToInt()
                     select new ClienteSearchInfo
                     {
                         idInternal = a.Cliente.idInternal,
                         descripcion = a.Cliente.descripcion,
                         numDocumento = a.Cliente.numDocumento,
                         correo = a.Cliente.email,
                         direccion = a.Cliente.Direccion.descripcion,
                         telefono = a.Cliente.telefono,
                         tipoDocumento = a.Cliente.TipoDocumento.abreviacion,
                         vista = String.Format("{0}:{1} {2}", a.Cliente.TipoDocumento.abreviacion, a.Cliente.numDocumento, a.Cliente.descripcion),
                     }).Distinct().Take(35);

            return Util.Tbl2Str(Util.EntidadToDataTable(p.ToList()));

        }

        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
               // clienteTXT.ChkVal= (string)Request.QueryString["idProyecto"];

                if (!this.IsPostBack)
                {
                    idProyecto.Value = (string)Request.QueryString["idProyecto"];
                    
                    //paginaAnt.Value = Page.Request.UrlReferrer.AbsoluteUri;
                    menuCtrl1.loadMenuVenta(idProyecto.Value.ToInt());
                    FormatForm();
                }
            }
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);

                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                     "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }

        }
        private void FormatForm()
        {
            var f = new ListValueBL().GetEtapaVentaXProyecto(idProyecto.Value.ToInt()).ToList();
            ListValueInfo todos= new ListValueInfo();
            todos.descripcion="-----TODOS--------";
            todos.idInternal=0;
            f.Insert(0, todos);


            etapaDDL.DataValueField = "idInternal";
            etapaDDL.DataTextField = "descripcion";
            etapaDDL.DataSource = f;
            etapaDDL.DataBind();

           

            
            localizacionDDL.DataValueField = "idInternal";
            localizacionDDL.DataTextField = "descripcion";


            var t = new ListValueBL().GetTipoUI(idProyecto.Value.ToInt()).ToList();
            if (t.Count > 0)
            {
                t.Add(todos);
            }
            
            tipoUIDDL.DataValueField = "idInternal";
            tipoUIDDL.DataTextField = "descripcion";
            tipoUIDDL.DataSource = t;
            tipoUIDDL.DataBind();


            var r = new ListValueBL().GetAniosOrdenVenta(idProyecto.Value.ToInt());
            r.Insert(0, todos);

            anioDDL.DataValueField = "idInternal";
            anioDDL.DataTextField = "descripcion";
            anioDDL.DataSource = r;
            anioDDL.DataBind();


            var s = new ListValueBL().GetMeses();
            s.Insert(0, todos);

            mesDDL.DataValueField = "idInternal";
            mesDDL.DataTextField = "descripcion";
            mesDDL.DataSource = s;
            mesDDL.DataBind();

           


            loadLozalizacion();
            anioDDL.SelectedValue = DateTime.Now.Year.ToString();
            mesDDL.SelectedValue = DateTime.Now.Month.ToString();
            dataBindItem();

            
        }

        private void loadLozalizacion()

        {
            ListValueInfo todos = new ListValueInfo();
            todos.descripcion = "-----TODOS--------";
            todos.idInternal = 0;
            
            
            var s = new ListValueBL().GetLocalizacionUI(etapaDDL.SelectedValue.ToInt()).ToList();
            s.Insert(0, todos);

            localizacionDDL.DataSource = s;
            localizacionDDL.DataBind();
            localizacionUPNL.Update();

        }

        private void dataBindItem()
        {
            itemGridView.DataSource =
                new OrdenVentaBL().GetOrdenVentaAnuladoDetalleMASTOTAL(idProyecto.Value.ToInt(),
                                                                etapaDDL.SelectedValue.ToInt(),
                                                                localizacionDDL.SelectedValue.ToInt(),
                                                                tipoUIDDL.SelectedValue.ToInt(),anioDDL.SelectedValue.ToInt(),mesDDL.SelectedValue.ToInt());

            itemGridView.DataBind();

        }

        

        protected void etapaDDL_SelectedIndexChanged(object sender, EventArgs e)
        {
            loadLozalizacion();
            dataBindItem();
            
        }


        protected void itemGridView_RowDataBound(Object sender, GridViewRowEventArgs e)
        {
            //e.Row.Cells[0].BackColor = Color.FromName("#99CCFF");

            if (e.Row.RowType == DataControlRowType.DataRow)
            {

                var item = (OrdenVentaAnuladoDetalleInfo)(e.Row.DataItem);
                bool esTotal = item.esTotal;


                if (esTotal)
                {
                    e.Row.BackColor = Color.LightYellow;
                    e.Row.Font.Bold = true;
                }
                //e.Row.Cells[7].ForeColor = (item.hasta30 > 0) ? Color.Red : Color.Green;
                


            }
        }

        protected void localizacionDDL_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                dataBindItem();
            }
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);

                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                     "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }
            
        }

        protected void conceptoDDL_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                dataBindItem();
            }
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);

                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                     "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }

        }
    }

}